HAL I2C constants migration

This section provides information about the HAL I2C constants migration.

HAL I2C error code constants

HAL1

HAL2

#define HAL_I2C_ERROR_NONE
#define HAL_I2C_ERROR_BERR
#define HAL_I2C_ERROR_ARLO
#define HAL_I2C_ERROR_AF
#define HAL_I2C_ERROR_OVR
#define HAL_I2C_ERROR_SIZE
#define HAL_I2C_ERROR_DMA

#define HAL_I2C_ERROR_TIMEOUT
#define HAL_I2C_ERROR_DMA_PARAM
#define HAL_I2C_WRONG_START
#define HAL_I2C_ERROR_INVALID_CALLBACK
#define HAL_I2C_ERROR_INVALID_PARAM
#define  HAL_I2C_ERROR_NONE
#define  HAL_I2C_ERROR_BERR
#define  HAL_I2C_ERROR_ARLO
#define  HAL_I2C_ERROR_AF
#define  HAL_I2C_ERROR_OVR
#define  HAL_I2C_ERROR_SIZE
#define  HAL_I2C_ERROR_DMA


Removed; These kinds of logical errors are reported by direct function return.

Related concept: Revised and optimized HAL error management


HAL I2C sequential transfer options constants

HAL1

HAL2



#define I2C_FIRST_FRAME
#define I2C_FIRST_AND_NEXT_FRAME
#define I2C_NEXT_FRAME
#define I2C_FIRST_AND_LAST_FRAME
#define I2C_LAST_FRAME
#define I2C_LAST_FRAME_NO_STOP
#define I2C_OTHER_FRAME
#define I2C_OTHER_AND_LAST_FRAME
typedef enum
{
    HAL_I2C_XFER_FIRST_FRAME,
    HAL_I2C_XFER_FIRST_AND_NEXT_FRAME,
    HAL_I2C_XFER_NEXT_FRAME,
    HAL_I2C_XFER_FIRST_AND_LAST_FRAME,
    HAL_I2C_XFER_LAST_FRAME,
    HAL_I2C_XFER_LAST_FRAME_NO_STOP,
    HAL_I2C_XFER_OTHER_FRAME,
    HAL_I2C_XFER_OTHER_AND_LAST_FRAME
} hal_i2c_xfer_opt_t;

HAL I2C addressing mode constants

HAL1

HAL2



#define I2C_ADDRESSINGMODE_7BIT
#define I2C_ADDRESSINGMODE_10BIT
typedef enum
{
    HAL_I2C_ADDRESSING_7BIT,
    HAL_I2C_ADDRESSING_10BIT
} hal_i2c_addressing_mode_t;

HAL I2C own address to masks constants

HAL1

HAL2



#define I2C_OA2_NOMASK
#define I2C_OA2_MASK01
#define I2C_OA2_MASK02
#define I2C_OA2_MASK03
#define I2C_OA2_MASK04
#define I2C_OA2_MASK05
#define I2C_OA2_MASK06
#define I2C_OA2_MASK07
typedef enum
{
  HAL_I2C_OWN_ADDR2_NOMASK,
  HAL_I2C_OWN_ADDR2_MASK01,
  HAL_I2C_OWN_ADDR2_MASK02,
  HAL_I2C_OWN_ADDR2_MASK03,
  HAL_I2C_OWN_ADDR2_MASK04,
  HAL_I2C_OWN_ADDR2_MASK05,
  HAL_I2C_OWN_ADDR2_MASK06,
  HAL_I2C_OWN_ADDR2_MASK07
} hal_i2c_own_addr2_mask_t;

HAL I2C memory address size constants

HAL1

HAL2



#define I2C_MEMADD_SIZE_8BIT
#define I2C_MEMADD_SIZE_16BIT
typedef enum
{
    HAL_I2C_MEM_ADDR_8BIT,
    HAL_I2C_MEM_ADDR_16BIT
} hal_i2c_mem_addr_size_t;

HAL I2C transfer direction constants

HAL1

HAL2



#define I2C_DIRECTION_TRANSMIT
#define I2C_DIRECTION_RECEIVE
typedef enum
{
    HAL_I2C_SLAVE_DIRECTION_TRANSMIT,
    HAL_I2C_SLAVE_DIRECTION_RECEIVE
} hal_i2c_slave_xfer_direction_t;

HAL I2C fast mode plus status constants

HAL1

HAL2



#define I2C_FASTMODEPLUS_DISABLE
#define I2C_FASTMODEPLUS_ENABLE
typedef enum
{
    HAL_I2C_FAST_MODE_PLUS_DISABLED
    HAL_I2C_FAST_MODE_PLUS_ENABLED
} hal_i2c_fast_mode_plus_status_t;

HAL I2C start or stop mode constants

HAL1

HAL2



#define  I2C_NO_STARTSTOP
#define  I2C_GENERATE_NO_START_READ
#define  I2C_GENERATE_NO_START_WRITE
#define  I2C_GENERATE_STOP
#define  I2C_GENERATE_START_READ
#define  I2C_GENERATE_START_WRITE
typedef enum
{
  I2C_NO_STARTSTOP,
  I2C_GENERATE_NO_START_READ,
  I2C_GENERATE_NO_START_WRITE,
  I2C_GENERATE_STOP,
  I2C_GENERATE_START_READ,
  I2C_GENERATE_START_WRITE,
} i2c_start_stop_mode_t;

HAL I2C autonomous mode trigger selection constants

HAL1

HAL2



#define I2C_TRIG_GRP1
#define I2C_TRIG_GRP2
#define I2C_GRP1_GPDMA_CH0_TCF_TRG
#define I2C_GRP1_GPDMA_CH1_TCF_TRG
#define I2C_GRP1_GPDMA_CH2_TCF_TRG
#define I2C_GRP1_GPDMA_CH3_TCF_TRG
#define I2C_GRP1_EXTI5_TRG
#define I2C_GRP1_EXTI9_TRG
#define I2C_GRP1_LPTIM1_CH1_TRG
#define I2C_GRP1_LPTIM2_CH1_TRG
#define I2C_GRP1_COMP1_TRG
#define I2C_GRP1_COMP2_TRG
#define I2C_GRP1_RTC_ALRA_TRG
#define I2C_GRP1_RTC_WUT_TRG
#define I2C_GRP2_LPDMA_CH0_TCF_TRG
#define I2C_GRP2_LPDMA_CH1_TCF_TRG
#define I2C_GRP2_LPDMA_CH2_TCF_TRG
#define I2C_GRP2_LPDMA_CH3_TCF_TRG
#define I2C_GRP2_EXTI5_TRG
#define I2C_GRP2_EXTI8_TRG
#define I2C_GRP2_LPTIM1_CH1_TRG
#define I2C_GRP2_LPTIM3_CH1_TRG
#define I2C_GRP2_COMP1_TRG
#define I2C_GRP2_COMP2_TRG
#define I2C_GRP2_RTC_ALRA_TRG
#define I2C_GRP2_RTC_WUT_TRG
typedef enum
{
    HAL_I2C_AM_TRIGGER_GRP1_GPDMA_CH0_TCF,
    HAL_I2C_AM_TRIGGER_GRP1_GPDMA_CH1_TCF,
    HAL_I2C_AM_TRIGGER_GRP1_GPDMA_CH2_TCF,
    HAL_I2C_AM_TRIGGER_GRP1_GPDMA_CH3_TCF,
    HAL_I2C_AM_TRIGGER_GRP1_EXTI5,
    HAL_I2C_AM_TRIGGER_GRP1_EXTI9,
    HAL_I2C_AM_TRIGGER_GRP1_LPTIM1_CH1,
    HAL_I2C_AM_TRIGGER_GRP1_LPTIM2_CH1,
    HAL_I2C_AM_TRIGGER_GRP1_COMP1,
    HAL_I2C_AM_TRIGGER_GRP1_COMP2,
    HAL_I2C_AM_TRIGGER_GRP1_RTC_ALRA,
    HAL_I2C_AM_TRIGGER_GRP1_RTC_WUT,
    HAL_I2C_AM_TRIGGER_GRP2_LPDMA_CH0_TCF,
    HAL_I2C_AM_TRIGGER_GRP2_LPDMA_CH1_TCF,
    HAL_I2C_AM_TRIGGER_GRP2_LPDMA_CH2_TCF,
    HAL_I2C_AM_TRIGGER_GRP2_LPDMA_CH3_TCF,
    HAL_I2C_AM_TRIGGER_GRP2_EXTI5,
    HAL_I2C_AM_TRIGGER_GRP2_EXTI8,
    HAL_I2C_AM_TRIGGER_GRP2_LPTIM1_CH1,
    HAL_I2C_AM_TRIGGER_GRP2_LPTIM3_CH1,
    HAL_I2C_AM_TRIGGER_GRP2_COMP1,
    HAL_I2C_AM_TRIGGER_GRP2_COMP2,
    HAL_I2C_AM_TRIGGER_GRP2_RTC_ALRA,
    HAL_I2C_AM_TRIGGER_GRP2_RTC_WUT
} hal_i2c_am_trigger_source_t;

HAL I2C autonomous mode trigger polarity constants

HAL1

HAL2



#define I2C_TRIG_POLARITY_RISING
#define I2C_TRIG_POLARITY_FALLING
typedef enum
{
    HAL_I2C_AM_TRIGGER_RISING,
    HAL_I2C_AM_TRIGGER_FALLING
} hal_i2c_am_trigger_polarity_t;

Related concept: Replace Finite Parameter Defines (Including PPP Instances) with Enum Types at HAL Levels.


HAL I2C dual addressing mode constants

HAL1

HAL2

In HAL1, the I2C dual addressing mode is a member of the I2C_InitTypeDef structure.

Removed; In HAL2, the I2C dual addressing mode is managed directly through dedicated functions within the HAL layer.

For more details, refer to HAL I2C configuration type definition.

#define I2C_DUALADDRESS_DISABLE
#define I2C_DUALADDRESS_ENABLE
HAL_I2C_DisableOwnAddress2()
HAL_I2C_EnableOwnAddress2()

HAL I2C general call addressing mode constants

HAL1

HAL2

In HAL1, the I2C general call addressing mode is a member of the I2C_InitTypeDef structure.

Removed; In HAL2, the I2C general call addressing mode is controlled directly via dedicated functions within the HAL layer.

For more details, refer to HAL I2C configuration type definition.

#define I2C_GENERALCALL_DISABLE
#define I2C_GENERALCALL_ENABLE
HAL_I2C_SLAVE_DisableAckGeneralCall()
HAL_I2C_SLAVE_EnableAckGeneralCall()

HAL I2C no-stretch mode constants

HAL1

HAL2

In HAL1, the I2C no-stretch mode is a member of the I2C_InitTypeDef structure.

Removed; In HAL2, the I2C no-stretch mode is managed directly through dedicated functions within the HAL layer.

For more details, refer to HAL I2C configuration type definition.

#define I2C_NOSTRETCH_DISABLE
#define I2C_NOSTRETCH_ENABLE
HAL_I2C_SLAVE_DisableClockStretching()
HAL_I2C_SLAVE_EnableClockStretching()

HAL I2C autonomous mode state

HAL1

HAL2

In HAL1, the I2C autonomous mode is a member of the I2C_AutonomousModeConfTypeDef structure.

Removed: In HAL2, the I2C autonomous mode is managed by unitary functions in the HAL layer.

For more details, refer to HAL I2C autonomous mode configuration type definition.

#define I2C_AUTO_MODE_DISABLE
#define I2C_AUTO_MODE_ENABLE
HAL_I2C_AM_EnableTrigger()
HAL_I2C_AM_DisableTrigger()

HAL I2C analog filter constants

HAL1

HAL2

Removed : In HAL2, the I2C analog filter is managed by unitary functions in the HAL layer.

#define I2C_ANALOGFILTER_ENABLE
#define I2C_ANALOGFILTER_DISABLE
HAL_I2C_EnableAnalogFilter()
HAL_I2C_DisableAnalogFilter()

HAL I2C reload end mode constants

HAL1

HAL2

#define I2C_RELOAD_MODE
#define I2C_AUTOEND_MODE
#define I2C_SOFTEND_MODE

These constants are used internally and do not impact user-level operations.


HAL I2C interrupt configuration constants

The listed defines in HAL1 are used by: HAL I2C enable interrupt, HAL I2C disable interrupt, and HAL I2C get IT source.

HAL1

HAL2

#define I2C_IT_ERRI

Removed; use LL_I2C_EnableIT_ERR / LL_I2C_DisableIT_ERR / LL_I2C_IsEnabledIT_ERR.

#define I2C_IT_TCI

Removed; use LL_I2C_EnableIT_TC / LL_I2C_DisableIT_TC / LL_I2C_IsEnabledIT_TC.

#define I2C_IT_STOPI

Removed; use LL_I2C_EnableIT_STOP / LL_I2C_DisableIT_STOP / LL_I2C_IsEnabledIT_STOP.

#define I2C_IT_NACKI

Removed; use LL_I2C_EnableIT_NACK / LL_I2C_DisableIT_NACK / LL_I2C_IsEnabledIT_NACK.

#define I2C_IT_ADDRI

Removed; use LL_I2C_EnableIT_ADDR / LL_I2C_DisableIT_ADDR / LL_I2C_IsEnabledIT_ADDR.

#define I2C_IT_RXI

Removed; use LL_I2C_EnableIT_RX / LL_I2C_DisableIT_RX / LL_I2C_IsEnabledIT_RX.

#define I2C_IT_TXI

Removed; use LL_I2C_EnableIT_TX / LL_I2C_DisableIT_TX / LL_I2C_IsEnabledIT_TX.

#define I2C_IT_BUF

Removed; use LL_I2C_EnableIT_BUF / LL_I2C_DisableIT_BUF / LL_I2C_IsEnabledIT_BUF.

#define I2C_IT_EVT

Removed; use LL_I2C_EnableIT_EVT / LL_I2C_DisableIT_EVT / LL_I2C_IsEnabledIT_EVT.

#define I2C_IT_ERR

Removed; use LL_I2C_EnableIT_ERR / LL_I2C_DisableIT_ERR / LL_I2C_IsEnabledIT_ERR.


HAL I2C flag constants

The listed defines in HAL1 are used by : HAL I2C get flag, and HAL I2C clear flag.

HAL1

HAL2


#define I2C_FLAG_TXE
#define I2C_FLAG_TXIS
#define I2C_FLAG_RXNE
#define I2C_FLAG_ADDR
#define I2C_FLAG_AF
#define I2C_FLAG_STOPF
#define I2C_FLAG_TC
#define I2C_FLAG_TCR
#define I2C_FLAG_BERR
#define I2C_FLAG_ARLO
#define I2C_FLAG_OVR
#define I2C_FLAG_PECERR
#define I2C_FLAG_TIMEOUT
#define I2C_FLAG_ALERT
#define I2C_FLAG_BUSY
#define I2C_FLAG_DIR
#define I2C_FLAG_ADD10
#define I2C_FLAG_BTF
#define I2C_FLAG_SB
#define I2C_FLAG_DUALF
#define I2C_FLAG_GENCALL
#define I2C_FLAG_TRA
#define I2C_FLAG_MSL
#define I2C_FLAG_MASK

All I2C flag definitions and macros are removed from HAL2.

Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_TXE instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_ADDR instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_NACK instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_STOP instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_BERR instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_ARLO instead.
Removed : Use LL_I2C_IsActiveFlag / LL_I2C_ClearFlag_OVR instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Removed : Use LL_I2C_IsActiveFlag instead.
Not implemented yet in HAL2.
Not implemented yet in HAL2.
Not implemented yet in HAL2.
Not implemented yet in HAL2.
Not implemented yet in HAL2.
Not implemented yet in HAL2.
Not implemented yet in HAL2.

Related concept: Define statements and enumerations redirected to LL equivalents


HAL I2C fast mode plus constants

HAL1

HAL2

In HAL1, enabling and disabling the I2C Fast Mode Plus feature is managed through the APIs HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) and HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus).

The ConfigFastModePlus parameter selects the target pin and accepts one of the predefined constants

In HAL2, enabling and disabling the I2C Fast Mode Plus feature is handled by the APIs HAL_I2C_EnableFastModePlus() and HAL_I2C_DisableFastModePlus().

The pin selection is managed separately via the function HAL_SYSCFG_EnableI2CFastModePlus(uint32_t fast_mode_plus).

The fast_mode_plus parameter specifies the target pin and accepts one of the predefined constants.

#define I2C_FMP_NOT_SUPPORTED
#define I2C_FASTMODEPLUS_PA9
#define I2C_FASTMODEPLUS_PA10
#define I2C_FASTMODEPLUS_PB6
#define I2C_FASTMODEPLUS_PB7
#define I2C_FASTMODEPLUS_PB8
#define I2C_FASTMODEPLUS_PB9
#define I2C_FASTMODEPLUS_PC14
#define I2C_FASTMODEPLUS_I2C1
#define I2C_FASTMODEPLUS_I2C2
#define I2C_FASTMODEPLUS_I2C3
#define I2C_FASTMODEPLUS_I2C4
#define I2C_FASTMODEPLUS_I2C5

#define HAL_SYSCFG_I2C_PA9_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PA10_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PB6_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PB7_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PB8_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PB9_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_PC14_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_I2C1_FAST_MODE_PLUS
#define HAL_SYSCFG_I2C_ALL_FAST_MODE_PLUS